package mlog

// 日志包默认日志使用

var std = newLog(LogConfig{})

// 内部默认
func newLog(config LogConfig) *Logger {
	return NewLog(config, 3)
}

// SetConfig 更新默认日志配置
func SetConfig(config LogConfig) {
	std = newLog(config)
}

func GetConfig() LogConfig {
	return std.GetConfig()
}

func GetLogLevel() Level {
	return std.GetLogLevel()
}

func LevelEnabled(lv Level) bool {
	return std.GetLogLevel() <= lv
}

func DebugEnabled() bool {
	return std.LevelEnabled(DebugLevel)
}

func InfoEnabled() bool {
	return std.LevelEnabled(InfoLevel)
}

func WarnEnabled() bool {
	return std.LevelEnabled(WarnLevel)
}

func ErrorEnabled() bool {
	return std.LevelEnabled(ErrorLevel)
}

func PanicEnabled() bool {
	return std.LevelEnabled(PanicLevel)
}

func FatalEnabled() bool {
	return std.LevelEnabled(FatalLevel)
}

// 日志记录

func Debug(args ...interface{}) {
	std.Debug(args...)
}

func Info(args ...interface{}) {
	std.Info(args...)
}

func Warn(args ...interface{}) {
	std.Warn(args...)
}

func Error(args ...interface{}) {
	std.Error(args...)
}

func DPanic(args ...interface{}) {
	std.DPanic(args...)
}

func Panic(args ...interface{}) {
	std.Panic(args...)
}

func Fatal(args ...interface{}) {
	std.Fatal(args...)
}

func Debugf(format string, args ...interface{}) {
	std.Debugf(format, args...)
}

func Infof(format string, args ...interface{}) {
	std.Infof(format, args...)
}

func Warnf(format string, args ...interface{}) {
	std.Warnf(format, args...)
}

func Errorf(format string, args ...interface{}) {
	std.Errorf(format, args...)
}

func DPanicf(format string, args ...interface{}) {
	std.DPanicf(format, args...)
}

func Panicf(format string, args ...interface{}) {
	std.Panicf(format, args...)
}

func Fatalf(format string, args ...interface{}) {
	std.Fatalf(format, args...)
}

func Debugw(msg string, keyValues ...interface{}) {
	std.Debugw(msg, keyValues...)
}

func Infow(msg string, keyValues ...interface{}) {
	std.Infow(msg, keyValues...)
}

func Warnw(msg string, keyValues ...interface{}) {
	std.Warnw(msg, keyValues...)
}

func Errorw(msg string, keyValues ...interface{}) {
	std.Errorw(msg, keyValues...)
}

func DPanicw(msg string, keyValues ...interface{}) {
	std.DPanicw(msg, keyValues...)
}

func Panicw(msg string, keyValues ...interface{}) {
	std.Panicw(msg, keyValues...)
}

func Fatalw(msg string, keyValues ...interface{}) {
	std.Fatalw(msg, keyValues...)
}

func Output(addCallerSkip int, lv Level, msg string) {
	std.Output(addCallerSkip-1, lv, msg)
}
